package org.springframework.core.convert.converter;

/**
 * @Name ConverterFactory
 * @Description: 类型转换 [工厂] 接口
 * 描述信息：用于将 S 类型的对象转换为 R 类型的对象，可以进行一对多的类型转换，即可以将一种类型转换为另一种类型及其子类。
 * 例如：如果要将 String 类型转换为 Ineger / Long / Float / Double / Decimal 等 Number 类型时，只需定义一个 ConverterFactory 转换器。
 * @Version v1.0.0
 * @Author: lichao
 * @Date: 2024-04-11 14:48:59
 **/
public interface ConverterFactory<S, R> {

    /**
     * 获取 S -> T [T extends R] 类型转换器
     *
     * @param targetType T 目标类
     * @return org.springframework.core.convert.converter.Converter<S, T> 目标转换器
     * @version v1.0.0
     * @author lichao
     * @date 2024-04-11 14:54:07
     */
    <T extends R> Converter<S, T> getConverter(Class<T> targetType);

}
